package com.luo.ai.assistant.file;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.luo.ai.assistant.file.model.FileDetail;
import com.luo.ai.assistant.file.model.FileDetailQuery;
import com.luo.ai.assistant.file.model.TrainStatusEnum;
import org.dromara.x.file.storage.core.recorder.FileRecorder;

import java.util.Collection;
import java.util.List;

/**
 * 文件上传的数据库记录
 *
 * @author luohq
 * @date 2025-01-07
 * @link <a href="https://x-file-storage.xuyanwu.cn/#/%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD?id=%e4%bf%9d%e5%ad%98%e4%b8%8a%e4%bc%a0%e8%ae%b0%e5%bd%95">https://x-file-storage.xuyanwu.cn/#/%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD?id=%e4%bf%9d%e5%ad%98%e4%b8%8a%e4%bc%a0%e8%ae%b0%e5%bd%95</a>
 */
public interface FileDetailService extends FileRecorder {

    /**
     * 分页查询文件记录
     *
     * @param fileDetailQuery 查询参数
     * @return 文件分页列表
     */
    Page<FileDetail> findPage(FileDetailQuery fileDetailQuery);

    /**
     * 根据ID查询文件详情列表
     *
     * @param ids 文件ID集合
     * @return 文件详情列表
     */
    List<FileDetail> findByIds(Collection<String> ids);

    /**
     * 根据文件ID更新训练状态
     *
     * @param id          文件ID
     * @param trainStatus 训练状态
     */
    void updateTrainStatus(String id, TrainStatusEnum trainStatus);

    /**
     * 根据文件ID更新向量文档ID
     *
     * @param id          文件ID
     * @param documentIds 向量文档ID集合
     */
    void updateDocumentIds(String id, Collection<String> documentIds);
}
